class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        int ret=0;
        for(int i=0;i<nums.size();i++)
        ret^=nums[i];

        int j=0;
        for(;j<32;j++)
        {
            if( ((ret>>j)&1)==1 )
            break;
        }
        vector<int> v1;
        vector<int> v2;

        for(int i=0;i<nums.size();i++)
        {
            if(((nums[i]>>j)&1)==1)
            {
                v1.push_back(nums[i]);
            }
            else
            {
                v2.push_back(nums[i]);
            }
        }
        vector<int> v;
        int cnt1=0,cnt2=0;
        for(int i=0;i<v1.size();i++)
        cnt1^=v1[i];
        for(int i=0;i<v2.size();i++)
        cnt2^=v2[i];
        v.push_back(cnt1);
        v.push_back(cnt2);
        return v;
    }
};